package zgrjb.snbq.teach_platform.dto.model;

import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

/**
 * 消息表 DO
 * 对应数据库表：message
 * 
 * @author system
 * @since 2024-12-28
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName("message")
public class MessageDO {

    /**
     * 消息ID
     */
    private Long id;

    /**
     * 发送者ID
     */
    @TableField("from_user_id")
    private Long fromUserId;

    /**
     * 接收者ID（群消息时为NULL）
     */
    @TableField("to_user_id")
    private Long toUserId;

    /**
     * 消息类型：private,system,notification,group
     */
    @TableField("message_type")
    private String messageType;

    /**
     * 消息内容
     */
    private String content;

    /**
     * 内容类型：text,image,file,audio,video
     */
    @TableField("content_type")
    private String contentType;

    /**
     * 附件URL
     */
    @TableField("file_url")
    private String fileUrl;

    /**
     * 会话ID
     */
    @TableField("conversation_id")
    private String conversationId;

    /**
     * 回复的消息ID
     */
    @TableField("reply_to_id")
    private Long replyToId;

    /**
     * 是否已读：0-未读，1-已读
     */
    @TableField("is_read")
    private Integer isRead;

    /**
     * 阅读时间
     */
    @TableField("read_time")
    private LocalDateTime readTime;

    /**
     * 是否删除：0-正常，1-删除
     */
    @TableField("is_deleted")
    private Integer isDeleted;

    /**
     * 优先级：1-低，2-中，3-高
     */
    private Integer priority;

    /**
     * AI智能建议内容
     */
    @TableField("ai_suggestion")
    private String aiSuggestion;

    /**
     * 扩展元数据
     */
    private String metadata;

    /**
     * 创建时间
     */
    @TableField("create_time")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField("update_time")
    private LocalDateTime updateTime;
} 